SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO


CREATE Procedure [dbo].[SP_TTPROC_INVE_I01]  
/*---------------------------------------------------------*/  
/*---Empresa              : OFISIS S.A.                  --*/  
/*---Cliente              : Ofisis                       --*/  
/*---Sistema              : Interfase Ventas             --*/  
/*---M¢dulo               : Empresa                      --*/  
/*---Script               : TTPROC_INTE                  --*/  
/*---Nombre SP            : SP_TTPROC_INVE_I01           --*/  
/*---Desarrollado por     : Julio Diestra L.             --*/  
/*---Fecha Creaci¢n       : 31/07/2001                   --*/  
/*---Base Datos           : Microsoft Sql Server         --*/  
/*---Versi¢n              : 8.0                          --*/  
/*---Invoca a SP          :                              --*/  
/*---------------------------------------------------------*/  
/*---------------------------------------------------------*/  
/*---Modificado 1 por     :Percy D¡az                    --*/  
/*---Fecha Modificaci¢n   :24/11/2003                    --*/   
/*---Detalle Modificaci¢n :Se agreg¢ los gastos financieros*/  
/*---para la cuenta de otros ingresos                    --*/  
/*---------------------------------------------------------*/  
/*---------------------------------------------------------*/  
/*---Modificado 2 por     : Julio Diestra Leiva          --*/  
/*---Fecha Modificaci¢n   : 17/08/2004                   --*/   
/*---Detalle Modificaci¢n : Versi¢n 5                    --*/  
/*---------------------------------------------------------*/    
/*---------------------------------------------------------*/  
/*---Comentarios                                         --*/  
/*---                                                    --*/  
/*---                                                    --*/  
/*---------------------------------------------------------*/  
/*---------------------------------------------------------*/  
/*---Drop Proc SP_TTPROC_INVE_I01                        --*/  
/*---Grant all on SP_TTPROC_INVE_I01 to public           --*/   
/*---SP_TTPROC_INVE_I01 '01' , 1, 1, '03/01/1999',       --*/  
/*--- '03/31/1999', 'N', 1, 0, 0, NULL , NULL            --*/  
/*---------------------------------------------------------*/  
@ISCO_EMPR		TD_VC_002,		----C¢digo de la Empresa
@INNU_PROC		TD_IN_001,		----Numero de Proceso de Interfase
@IDFE_INIC		TD_DT_001,		----Fecha de Inicio del Proceso
@IDFE_FINA		TD_DT_001,		----Fecha de final del Proceso
@ISST_FLAG		TD_VC_001,		----Flag a Actualizar en Registros Leidos
@ISDE_RESP		TD_VC_100,		----Nombre Responsable
@ISST_INUP		TD_VC_001,		----Estatus que indica si es Nuevo o Actualiza
@OSNU_ASTO		TD_VC_010 OUTPUT	----Devuelve £ltimo asiento que genera

As  
Declare  
--  Variables de Trabajo                                 
@VSCO_MONE_NACI		TD_VC_003,	----Moneda Nacional
@VSCO_MONE_EXTR		TD_VC_003,	----Moneda Nacional
@VSCO_MONE_CNTB		TD_VC_003,	----Moneda Contabilidad
@VNNU_ANNO			TD_IN_004_ANOS,	----A¤o de proceso
@VNNU_MESE			TD_IN_002_MESE,	----Mes de proceso
@VNNU_ASTO			BigInt,			----N£mero asiento (Voucher)  
@VSNU_ASTO		TD_VC_010,		----N£mero asiento (Voucher)
@VNNU_SECU		TD_IN_001,		----N£mero asiento (Voucher)
@VSCO_CNTA_EXIS		TD_VC_010,		----Cuenta Existencia
@VSCO_MONE_CNTA		TD_VC_003,		----Moneda Cuenta Contable
@VSCO_CNTA_EMPR		TD_VC_010,		----Cuenta Contable
@VSST_MONE		TD_VC_001,		----Flag de Control de Moneda     
@VSST_AUXI_CNTA		TD_VC_001,		----Flag de Auxiliar              
@VSST_DOCU_CNTA		TD_VC_001,		----Flag de Documento             
@VSST_ORDE_CNTA		TD_VC_001,		----Flag de Orden de Servicio     
@VNFA_CAMB		TD_NU_015_006,		----Factor de cambio               
@VNFA_CAMB_DIAR		TD_NU_015_006,		----Factor de cambio Diario        
@VSTI_AUXI_EMPR		TD_VC_001,		----Tipo Auxiliar Contable         
@VSCO_AUXI_EMPR		TD_VC_020,		----Codigo Auxiliar Contable      
@VSCO_ORDE_SERV		TD_VC_020,		----Codigo Orden de Servicio      
@VSTI_DOCU		TD_VC_003,		----Tipo Documento                
@VSNU_DOCU		TD_VC_020,		----Numero Documento              
@VDFE_DOCU		TD_DT_001,		----Fecha Documento               
@VDFE_VENC		TD_DT_001,		----Fecha Vencimiento             
@VSTI_OPER		TD_VC_003,		----Tipo Operacion                 
@VSCO_MONE_ASTO		TD_VC_003,		----Moneda Asiento                 
@VNIM_MOVI_ORIG		TD_NU_016_004,		----Importe Movimiento Origen     
@VNIM_MVTO_CNTB		TD_NU_016_004,		----Importe Movimiento Contable   
@VSDE_GLOS		TD_VC_100,		----Glosa                         
@VSCO_OPRC_ANTE		TD_VC_003,		----Operacion Contable Anterior   
@VNIM_MOVI		TD_NU_016_004,		----Importe del movimiento  
  
----  Declaro variables para el cursor 1 
@CSCO_UNID		TD_VC_003,  
@CSTI_DOCU		TD_VC_003,  
@CSNU_DOCU		TD_VC_020,  
@CDFE_DOCU		TD_DT_001,  
@CDFE_VENC		TD_DT_001,  
@CSTI_AUXI_CABE		TD_VC_001,  
@CSCO_AUXI_CABE		TD_VC_020,  
@CSCO_MONE_MOVI		TD_VC_003,  
@CNFA_CAMB_MOVI		TD_NU_015_006,		----Factor de cambio Movi          
@CNFA_CONV_MOVI		TD_NU_015_006,		----Factor de Conversi¢n Movi   
@CNFA_CAMB_M001        TD_NU_015_006,           -- Factor de cambio Movi         
@CNFA_CONV_M001        TD_NU_015_006,           -- Factor de Conversi¢n Movi     
@CNIM_BRUT_AFEC		TD_NU_016_004,		----Importe Bruto Afecto       
@CNIM_BRUT_INAF		TD_NU_016_004,		----Importe Bruto InAfecto     
@CNIM_IGVS		TD_NU_016_004,		----Importe Impuesto           
@CNIM_FLET		TD_NU_016_004,		----Importe Flete              
@CNIM_GAFI		TD_NU_016_004,		----Importe Flete              
@CNIM_MORA		TD_NU_016_004,		----Importe Seguro             
@CNIM_TOTA		TD_NU_016_004,		----Importe Total Documento    
@CNIM_DCT1		TD_NU_016_004,		----Importe dcto 1
@CNIM_DCT2		TD_NU_016_004,		----Importe dcto 2
@CNNU_CNTB_EMPR		TD_IN_001,  
@CSCO_UNID_CNTB		TD_VC_003,  
@CSCO_OPRC_CNTB		TD_VC_003,  
@CSCO_CNTA_CLNT		TD_VC_010,  
@CSCO_CNTA_VENT		TD_VC_010,  
@CSCO_CNTA_OTRO		TD_VC_010,  
@CSCO_CNTA_DEVO		TD_VC_010,  
@CSCO_CNTA_IGVS		TD_VC_010,  
@CSCO_CNTA_DCTO		TD_VC_010,  
@CSST_SIGN			TD_VC_001,  

@CSCO_CNTA_DETA		TD_VC_010,  
@CNIM_MOVI_DETA		TD_NU_016_004,  
@CSCO_EMPR_0001		TD_VC_002,  
@CNNU_CNTB_EMP1		TD_IN_001,  
@CSCO_UNID_CNT1		TD_VC_003,  
@CSCO_OPRC_CNT1		TD_VC_003,  
@CNNU_ANNO_0001		TD_IN_004_ANOS,  
@CNNU_MESE_0001		TD_IN_002_MESE,  
@CSNU_ASTO_0001		TD_VC_010,  
@CNNU_SECU_0001		TD_IN_001,  
@CDFE_ASTO_CNTB		TD_DT_001,  
@CSCO_CNTA_EMP1		TD_VC_010,  
@CSTI_AUXI_EMP1		TD_VC_001,  
@CSCO_AUXI_EMP1		TD_VC_020,  
@CSTI_DOCU_0001		TD_VC_003,  
@CSNU_DOCU_0001		TD_VC_020,  
@CDFE_DOCU_0001		TD_DT_001,  
@CDFE_DOCU_VENC		TD_DT_001,  
@CSTI_CAMB_0001		TD_VC_003,  
@CSCO_MONE_0001		TD_VC_003,  
@CNFA_CAMB_0001		TD_NU_016_004,  
@CNFA_CAMB_DIA1		TD_NU_016_004,  
@CSTI_OPER_0001		TD_VC_003,  
@CNIM_MVTO_ORI1		TD_NU_016_004,  
@CNIM_MVTO_CNT1		TD_NU_016_004,  
@CSDE_GLOS_0001		TD_VC_100,  
@CSTI_DOCU_REF1		TD_VC_003,  
@CSNU_DOCU_REF1		TD_VC_020,  
@CDFE_DOCU_REF1		TD_DT_001,  
@CSNO_GIRA_0001		TD_VC_050,  
@CDFE_ENTR_CHE1		TD_DT_001,  
@CDFE_PROG_CHE1		TD_DT_001,  
@CSCO_ORDE_SER1		TD_VC_020,  
@CSSI_MVTO_CNT1		TD_VC_003,  
@CSSI_MVTO_DOC1		TD_VC_001,  
@CSCO_UNID_ORI1		TD_VC_003,  
@CSCO_OPRC_ORI1		TD_VC_003,  
@CSNU_ASTO_ORI1		TD_VC_010,  
@CSST_OTRS_0001		TD_VC_001,  
@CNNU_PROC_0001		TD_IN_001,  
@CNNU_PROC_SEC1		TD_IN_001,  
@CSST_IMPR_CHE1		TD_VC_001,  
@CSST_FLAG_0001		TD_VC_020,  
@CSCO_TABL_ORI1		TD_IN_001,  
@CSCO_CLAV_TAO1		TD_VC_050,  
@CSCO_USUA_MOD1		TD_VC_008,  
@CDFE_USUA_MODI		TD_DT_001   
----SET TRANSACTION ISOLATION LEVEL REPEATABLE READ  
Begin Tran SP_TTPROC_INVE_I01   

-- Recupero Moneda Nacional Y Extranjera --  
Select @VSCO_MONE_EXTR = CO_MONE_ALTE
From   [OFIVENT].[DBO].TMPARA_VENT  
Where  CO_EMPR = @ISCO_EMPR  

Select @VSCO_MONE_NACI = CO_MONE_NACI
From   [OFIVENT].[DBO].TMEMPR  
Where  CO_EMPR = @ISCO_EMPR  

----Declaro Cursor  
Declare CU_TTPROC_INVE_I01_1  Cursor  
For  
Select t1.CO_UNID,      t1.TI_DOCU,  
       t1.NU_DOCU,      t1.FE_DOCU, t1.FE_VENC,  
       'C',             t1.CO_CLIE,  
       t1.CO_MONE,     
       CASE t1.CO_MONE  
         WHEN @VSCO_MONE_EXTR THEN t1.FA_CAMB
         WHEN @VSCO_MONE_NACI THEN t1.FA_CAMB
	 ELSE t1.FA_CAMB_BASE END,  
       CASE t1.CO_MONE  
         WHEN @VSCO_MONE_EXTR THEN t1.FA_CAMB
         WHEN @VSCO_MONE_NACI THEN t1.FA_CAMB_BASE
	 ELSE t1.FA_CAMB END,  
      t1.IM_BRUT_AFEC, t1.IM_BRUT_INAF,  
       ( IsNull( t1.IM_IMP1, 0 ) + IsNull( t1.IM_IMP2, 0 ) + IsNull( t1.IM_IMP3, 0 ) ),  
       t1.IM_FLET,      t1.IM_MORA, t1.IM_GAFI,  
       t1.IM_TOTA,   
       t2.NU_CNTB_EMPR, t2.CO_UNID_CNTB,  
       t2.CO_OPRC_CNTB, t2.CO_CNTA_CLNT,  
       t2.CO_CNTA_VENT, t2.CO_CNTA_OTRO,  
       t2.CO_CNTA_DEVO, t2.CO_CNTA_IGVS,  
       t2.CO_CNTA_DCTO, t3.ST_SIGN,
       t1.IM_DCT1, t1.IM_DCT2, 
       t1.FA_CAMB, t1.FA_CAMB_BASE   
From   [OFIVENT].[DBO].[TCDOCU_CLIE] t1, [OFIVENT].[DBO].[TMPARA_VECO] t2,  
       [OFISEGU].[DBO].[TTDOCU_CNTB] t3 ---, [OFITESO].[DBO].[TMDOCU_CLIE] t4  
Where  t1.CO_EMPR  =  @ISCO_EMPR  
And    t1.FE_DOCU >=  @IDFE_INIC  
And    t1.FE_DOCU <=  @IDFE_FINA  
And    t1.CO_ESTA_DOCU !=  'ANU'  
And    ( ( @ISST_INUP = 'I' And  
           t1.ST_INTE  = 'N' ) Or  
         ( @ISST_INUP = 'U' And  
           t1.ST_INTE = 'P' And  
           t1.NU_PROC = @INNU_PROC) )  
And    t2.CO_EMPR  =  t1.CO_EMPR  
And    t2.CO_UNID  =  t1.CO_UNID  
And    t2.TI_DOCU  =  t1.TI_DOCU  
And    t2.TI_FACT  =  t1.TI_FACT  
And    t2.CO_MONE  =  t1.CO_MONE  
And    t2.NU_CNTB_EMPR IS NOT NULL  
And    t3.TI_DOCU  =  t1.TI_DOCU  
/*And    t4.CO_EMPR       = t1.CO_EMPR  
And    t4.CO_UNID_CONC  = t1.CO_UNID  
And    t4.CO_TIPO_DOCU  = t1.TI_DOCU  
And    t4.NU_DOCU_CLIE  = t1.NU_DOCU  */
Order By t2.NU_CNTB_EMPR, t2.CO_UNID_CNTB, t2.CO_OPRC_CNTB,  
         t1.FE_DOCU  
 
---- Elimina Procesos Anteriores --  
Delete [OFIINTE].[dbo].[TTINTE_CNDE] Where NU_PROC = @INNU_PROC  And CO_EMPR = @ISCO_EMPR  
If @@error != 0  
Begin  
  Rollback Tran SP_TTPROC_INVE_I01  
  Return  
End  

---- Elimina Procesos Anteriores --  
Delete [OFIINTE].[dbo].[TTINTE_CNTB] Where NU_PROC = @INNU_PROC  And CO_EMPR = @ISCO_EMPR    
If @@error != 0  
Begin  
  Rollback Tran SP_TTPROC_INVE_I01  
  Return  
End  

---- Elimina Procesos Anteriores --  
Delete [OFIINTE].[dbo].[TTINTE_REPO] Where NU_PROC = @INNU_PROC  And CO_EMPR = @ISCO_EMPR    
If @@error != 0  
Begin  
  Rollback Tran SP_TTPROC_INVE_I01  
  Return  
End  

-- Elimina Procesos Anteriores --  
Delete [OFIINTE].[dbo].[TXMVTO_AJTE] Where NU_PROC = @INNU_PROC And CO_EMPR = @ISCO_EMPR
If @@error != 0  
Begin  
  Rollback Tran SP_TTPROC_INVE_I01  
  Return  
End  

-- Inicializamos variables --  
Select @VNNU_ASTO = @OSNU_ASTO  
Select @VNNU_SECU = 0  

-- Recupero Moneda Nacional --  
Select @VSCO_MONE_NACI = CO_MONE_NACI  
From   [OFISEGU].[DBO].TMEMPR  
Where  CO_EMPR = @ISCO_EMPR  
  
Open     CU_TTPROC_INVE_I01_1  
Fetch    CU_TTPROC_INVE_I01_1  
Into     @CSCO_UNID,@CSTI_DOCU,@CSNU_DOCU,@CDFE_DOCU,
         @CDFE_VENC,@CSTI_AUXI_CABE,@CSCO_AUXI_CABE,@CSCO_MONE_MOVI,
         @CNFA_CAMB_MOVI,@CNFA_CONV_MOVI,@CNIM_BRUT_AFEC,@CNIM_BRUT_INAF,  
         @CNIM_IGVS,@CNIM_FLET,@CNIM_MORA,@CNIM_GAFI,  
         @CNIM_TOTA,@CNNU_CNTB_EMPR,@CSCO_UNID_CNTB,@CSCO_OPRC_CNTB,
         @CSCO_CNTA_CLNT,@CSCO_CNTA_VENT,@CSCO_CNTA_OTRO,@CSCO_CNTA_DEVO,
         @CSCO_CNTA_IGVS,@CSCO_CNTA_DCTO,@CSST_SIGN,@CNIM_DCT1,
         @CNIM_DCT2,@CNFA_CAMB_M001,@CNFA_CONV_M001
While  @@fetch_status = 0  
Begin  
  If @@error != 0  
  Begin  
    Rollback Tran SP_TTPROC_INVE_I01  
    Close CU_TTPROC_INVE_I01_1  
    Deallocate CU_TTPROC_INVE_I01_1  
    Return  
  End  

  Select @VSDE_GLOS = 'I.V ' +  @ISCO_EMPR + ' ' + @CSCO_UNID + ' ' +  @CSTI_DOCU + ' ' + @CSNU_DOCU  
Select @VNNU_ASTO = @VNNU_ASTO + 1  
  Select @VNNU_SECU = 1  
  Select @VSNU_ASTO = SubString( Convert( Varchar, ( @VNNU_ASTO + 10000000000 ) ), 2, 10 )  

  -- Recupero a¤o y mes de proceso --  
  Select @VNNU_ANNO = Year( @CDFE_DOCU )  
  Select @VNNU_MESE = Month( @CDFE_DOCU )   
  -- Recupero Moneda Contabilidad --  
  Select @VSCO_MONE_CNTB = CO_MONE  
  From   TTCNTB_EMPR  
  Where  CO_EMPR = @ISCO_EMPR  
  And    NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
  
  ----Cuenta Clientes   
  If Len( Rtrim( Ltrim( @CSCO_CNTA_CLNT ) ) ) > 0  And @CNIM_TOTA > 0  
  Begin  
    Select  @VSCO_CNTA_EMPR = @CSCO_CNTA_CLNT  
    ---- Obtiene Parametros de Cuenta Contable   
    Select @VSCO_MONE_CNTA = CO_MONE,  
           @VSST_MONE      = ST_MONE,  
           @VSST_AUXI_CNTA = ST_AUXI_EMPR,  
           @VSST_DOCU_CNTA = ST_DOCU_CNTB,  
           @VSST_ORDE_CNTA = ST_ORDE_SERV  
    From   OFICONT.dbo.TMPLAN_EMPR  
    Where  CO_EMPR = @ISCO_EMPR  
    And    CO_CNTA_EMPR = @VSCO_CNTA_EMPR  
    ---- Tipo de Operacion --  
    If @CSST_SIGN = 'S'  
      Select @VSTI_OPER = 'CAR'  
    Else  
      Select @VSTI_OPER = 'ABO'  
    ---- Datos de Tipo y Codigo de Auxiliar --  
    Select @VSTI_AUXI_EMPR = NULL  , @VSCO_AUXI_EMPR = NULL  

    If @VSST_AUXI_CNTA = 'S'  
      Select @VSTI_AUXI_EMPR = @CSTI_AUXI_CABE, @VSCO_AUXI_EMPR = @CSCO_AUXI_CABE  

    ---- Datos de Orden de Servicio --  
    Select @VSCO_ORDE_SERV = NULL  
    -- Datos de Documento --  
    Select  @VSTI_DOCU = NULL,	@VSNU_DOCU = NULL,
		@VDFE_DOCU = NULL,	@VDFE_VENC = NULL  

    If @VSST_DOCU_CNTA = 'S'  
      Select @VSTI_DOCU = @CSTI_DOCU,	@VSNU_DOCU = @CSNU_DOCU,
		 @VDFE_DOCU = @CDFE_DOCU,	@VDFE_VENC = @CDFE_VENC  

    Select @VNIM_MOVI = @CNIM_TOTA, 	@VNFA_CAMB      = @CNFA_CAMB_MOVI,
           @VNFA_CAMB_DIAR = @CNFA_CONV_MOVI, @VNIM_MOVI_ORIG = 0.00, 
           @VNIM_MVTO_CNTB = 0.00  

    ---- Obtiene Monto Origen y Monto Contable --  
    Exec SP_TTPROC_INLO_Q02 @CSCO_MONE_MOVI,        @VSCO_MONE_CNTA,  
                            @VSCO_MONE_CNTB,        @VSCO_MONE_NACI,  
                            @VSST_MONE,             @CNFA_CAMB_M001,   @CNFA_CONV_M001,
                            @VNIM_MOVI,             @VNIM_MOVI_ORIG OUTPUT,  
                            @VNIM_MVTO_CNTB OUTPUT, @VSCO_MONE_ASTO OUTPUT  

    ---- Tipo de Cambio 1, Cuando moneda del Asiento es la misma a la Moneda Contable   
    If @VSCO_MONE_ASTO = @VSCO_MONE_CNTB  
      Select @VNFA_CAMB = 1  
    -- Graba Asiento --  

    Insert Into [OFIINTE].[dbo].[TTINTE_CNDE]  
    (CO_EMPR,	NU_CNTB_EMPR,	CO_UNID_CNTB,	CO_OPRC_CNTB,  
     NU_ANNO,	NU_MESE,		NU_ASTO,		NU_SECU,  
     FE_ASTO_CNTB,CO_CNTA_EMPR,	TI_AUXI_EMPR,	CO_AUXI_EMPR,  
     TI_DOCU,	NU_DOCU,		FE_DOCU,		TI_CAMB,  
     CO_MONE,	FA_CAMB,		FA_CAMB_DIAR,	TI_OPER,  
     IM_MVTO_ORIG,IM_MVTO_CNTB,	DE_GLOS,		CO_ORDE_SERV,
     SI_MVTO_CNTB,NU_PROC, FE_DOCU_VENC)  
     Values
    (@ISCO_EMPR,	@CNNU_CNTB_EMPR,	@CSCO_UNID_CNTB,	@CSCO_OPRC_CNTB,  
     @VNNU_ANNO,	@VNNU_MESE,		@VSNU_ASTO,		@VNNU_SECU,  
     @CDFE_DOCU,	@VSCO_CNTA_EMPR,	@VSTI_AUXI_EMPR,	@VSCO_AUXI_EMPR,  
     @VSTI_DOCU,	@VSNU_DOCU,		@VDFE_DOCU,		'PAC',  
     @VSCO_MONE_ASTO,@VNFA_CAMB,	@VNFA_CAMB_DIAR,	@VSTI_OPER,  
     @VNIM_MOVI_ORIG,@VNIM_MVTO_CNTB,@VSDE_GLOS,	@VSCO_ORDE_SERV,
     'APR', @INNU_PROC,IsNull(@VDFE_VENC, @VDFE_DOCU) )  

    If @@error != 0  
    Begin  
      Rollback Tran SP_TTPROC_INVE_I01  
      Close CU_TTPROC_INVE_I01_1  
      Deallocate CU_TTPROC_INVE_I01_1  
      Return  
    End  
    ---- Graba Asiento en Tabla de Ajustes --  
    ---- Solo si Cuenta es en Dolares      --  
    If @VSCO_MONE_CNTA <> @VSCO_MONE_CNTB  
    Begin  
      Insert Into[OFIINTE].[dbo].[TXMVTO_AJTE]  
      (CO_EMPR,	NU_CNTB_EMPR,	CO_UNID_CNTB,	CO_OPRC_CNTB,  
       NU_ANNO,	NU_MESE,		NU_ASTO,		NU_SECU,  
       FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,  
       TI_DOCU,      NU_DOCU,      FE_DOCU,      TI_CAMB,  
       CO_MONE,      FA_CAMB,      FA_CAMB_DIAR, TI_OPER,  
       IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS,	 CO_ORDE_SERV,
       SI_MVTO_CNTB, NU_PROC, FE_DOCU_VENC )  
      Values
      (@ISCO_EMPR,     @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB,  
       @VNNU_ANNO,     @VNNU_MESE,      @VSNU_ASTO,      @VNNU_SECU,  
       @CDFE_DOCU,     @VSCO_CNTA_EMPR, @VSTI_AUXI_EMPR, @VSCO_AUXI_EMPR,  
       @VSTI_DOCU,     @VSNU_DOCU,      @VDFE_DOCU,      'PAC',  
       @VSCO_MONE_ASTO,@VNFA_CAMB,      @VNFA_CAMB_DIAR, @VSTI_OPER,  
       @VNIM_MOVI_ORIG,@VNIM_MVTO_CNTB, @VSDE_GLOS,	   @VSCO_ORDE_SERV,
       'APR',	     @INNU_PROC,	    IsNull(@VDFE_VENC, @VDFE_DOCU) )  
      If @@error != 0  
      Begin  
        Rollback Tran SP_TTPROC_INVE_I01  
        Close CU_TTPROC_INVE_I01_1  
        Deallocate CU_TTPROC_INVE_I01_1  
        Return  
      End  
    End  
Select @VNNU_SECU = @VNNU_SECU + 1  
  End  
  
  ----Cuenta Ingreso Ventas   
  If Len( Rtrim( Ltrim( @CSCO_CNTA_VENT ) ) ) > 0 And @CSST_SIGN = 'S'  
  Begin  
    ---- Solo cuando ST_SIGN = 'S', Factura, Boleta,   
    ---- Nota de Debito, Excepto Notas de Credito, Montos los obtiene de la Cabecera --  
     Select  @VSCO_CNTA_EMPR = @CSCO_CNTA_VENT  
    ---- Obtiene Parametros de Cuenta Contable --  
    Select @VSCO_MONE_CNTA = CO_MONE,  
           @VSST_MONE      = ST_MONE,  
           @VSST_AUXI_CNTA = ST_AUXI_EMPR,  
           @VSST_DOCU_CNTA = ST_DOCU_CNTB,  
           @VSST_ORDE_CNTA = ST_ORDE_SERV  
    From   [OFICONT].[DBO].TMPLAN_EMPR  
    Where  CO_EMPR = @ISCO_EMPR  
    And    CO_CNTA_EMPR = @VSCO_CNTA_EMPR  
    ---- Tipo de Operacion 
    Select @VSTI_OPER = 'ABO'  
    ---- Datos de Tipo y Codigo de Auxiliar   
    Select @VSTI_AUXI_EMPR = NULL,	@VSCO_AUXI_EMPR = NULL  
    If @VSST_AUXI_CNTA = 'S'  
      Select @VSTI_AUXI_EMPR = @CSTI_AUXI_CABE,	@VSCO_AUXI_EMPR = @CSCO_AUXI_CABE  
    -- Datos de Orden de Servicio --  
    Select @VSCO_ORDE_SERV = NULL  
    -- Datos de Documento --  
    Select @VSTI_DOCU = NULL,	@VSNU_DOCU = NULL,
  	     @VDFE_DOCU = NULL,	@VDFE_VENC = NULL  

    If @VSST_DOCU_CNTA = 'S'  
      Select @VSTI_DOCU = @CSTI_DOCU, @VSNU_DOCU = @CSNU_DOCU,  
             @VDFE_DOCU = @CDFE_DOCU, @VDFE_VENC = @CDFE_VENC  

    If ( @CNIM_BRUT_AFEC + @CNIM_BRUT_INAF ) > 0  
    Begin  
      Select @VNIM_MOVI  = @CNIM_BRUT_AFEC + @CNIM_BRUT_INAF,
             @VNFA_CAMB  = @CNFA_CAMB_MOVI,  @VNFA_CAMB_DIAR = @CNFA_CONV_MOVI,
             @VNIM_MOVI_ORIG = 0.00,         @VNIM_MVTO_CNTB = 0.00  
      -- Obtiene Monto Origen y Monto Contable --  
      Exec SP_TTPROC_INLO_Q02 @CSCO_MONE_MOVI,        @VSCO_MONE_CNTA,  
                              @VSCO_MONE_CNTB,        @VSCO_MONE_NACI,  
                              @VSST_MONE,             @CNFA_CAMB_M001,   @CNFA_CONV_M001,
                              @VNIM_MOVI,             @VNIM_MOVI_ORIG OUTPUT,  
                              @VNIM_MVTO_CNTB OUTPUT, @VSCO_MONE_ASTO OUTPUT  

      -- Tipo de Cambio 1, Cuando moneda del Asiento es la misma a la Moneda Contable --  
      If @VSCO_MONE_ASTO = @VSCO_MONE_CNTB  
        Select @VNFA_CAMB = 1  
      -- Graba Asiento --  
      Insert Into [OFIINTE].[dbo].[TTINTE_CNDE]  
      (CO_EMPR,      NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,  
       NU_ANNO,      NU_MESE,      NU_ASTO,      NU_SECU,  
       FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,  
       TI_DOCU,      NU_DOCU,      FE_DOCU,      TI_CAMB,  
       CO_MONE,      FA_CAMB,      FA_CAMB_DIAR, TI_OPER,  
       IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS,      CO_ORDE_SERV,
       SI_MVTO_CNTB, NU_PROC , FE_DOCU_VENC )  
      Values
      (@ISCO_EMPR,   @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB,  
       @VNNU_ANNO,   @VNNU_MESE,      @VSNU_ASTO,      @VNNU_SECU,  
       @CDFE_DOCU,   @VSCO_CNTA_EMPR, @VSTI_AUXI_EMPR, @VSCO_AUXI_EMPR,  
       @VSTI_DOCU,   @VSNU_DOCU,      @VDFE_DOCU,      'PAC',  
       @VSCO_MONE_ASTO, @VNFA_CAMB,      @VNFA_CAMB_DIAR, @VSTI_OPER,  
       @VNIM_MOVI_ORIG, @VNIM_MVTO_CNTB, @VSDE_GLOS,   @VSCO_ORDE_SERV,
       'APR',        @INNU_PROC, IsNull(@VDFE_VENC, @VDFE_DOCU))  
      If @@error != 0  
      Begin  
        Rollback Tran SP_TTPROC_INVE_I01  
        Close CU_TTPROC_INVE_I01_1  
        Deallocate CU_TTPROC_INVE_I01_1  
        Return  
      End  

      Select @VNNU_SECU = @VNNU_SECU + 1  
    End  
  End  
  Else If @CSST_SIGN = 'S'  
  Begin  
    ---- Solo cuando ST_SIGN = 'S', Factura, Boleta,   
    ---- Nota de Debito, Excepto Notas de Credito, Montos los obtiene del Detalle --  
    ---- Declaro Cursor  
    Declare CU_TTPROC_INVE_I01_2  Cursor  
    For  
    Select IsNull( t5.CO_CNTA_VENT, 'S/CUENTA'),  
           Sum(Round((Round(t1.PR_VENT * t1.CA_DOCU,2)  - (t1.IM_DCT1 + t1.IM_DCT2) ) ,2)) 
     From   [OFIVENT].[DBO].TDDOCU_CLIE t1, [OFIVENT].[DBO].TMITEM  t2, [OFIVENT].[DBO].TCDOCU_CLIE t3,   
            [OFIVENT].[DBO].TTFAMI t5  
    Where  t1.CO_EMPR = @ISCO_EMPR  
    And    t1.CO_UNID = @CSCO_UNID  
    And    t1.TI_DOCU = @CSTI_DOCU  
    And    t1.NU_DOCU = @CSNU_DOCU  
    And    t2.CO_EMPR = t1.CO_EMPR  
    And    t2.CO_ITEM = t1.CO_ITEM  
    And    t3.CO_EMPR = t1.CO_EMPR  
    And    t3.CO_UNID = t1.CO_UNID  
    And    t3.TI_DOCU = t1.TI_DOCU  
    And    t3.NU_DOCU = t1.NU_DOCU   
    And    t5.CO_FAMI = t2.CO_FAMI  
    And    t5.CO_RUBR = t2.CO_RUBR  
    And    t5.TI_ITEM = t2.TI_ITEM  
    And    t5.CO_EMPR = t2.CO_EMPR         
    Group By IsNull( t5.CO_CNTA_VENT, 'S/CUENTA')  

  
    Open  CU_TTPROC_INVE_I01_2  
    Fetch CU_TTPROC_INVE_I01_2  
    Into  @CSCO_CNTA_DETA, @CNIM_MOVI_DETA  
  
    While  @@fetch_status = 0  
    Begin  
      If @@error != 0  
      Begin  
        Rollback Tran SP_TTPROC_INVE_I01  
        Close CU_TTPROC_INVE_I01_2  
        Deallocate CU_TTPROC_INVE_I01_2  
        Close CU_TTPROC_INVE_I01_1  
        Deallocate CU_TTPROC_INVE_I01_1  
        Return  
      End  
      Select  @VSCO_CNTA_EMPR = @CSCO_CNTA_DETA  
      ---- Obtiene Parametros de Cuenta Contable 
      Select @VSCO_MONE_CNTA = CO_MONE,      @VSST_MONE      = ST_MONE,  
             @VSST_AUXI_CNTA = ST_AUXI_EMPR, @VSST_DOCU_CNTA = ST_DOCU_CNTB,  
             @VSST_ORDE_CNTA = ST_ORDE_SERV  
      From   [OFICONT].[DBO].TMPLAN_EMPR  
      Where  CO_EMPR = @ISCO_EMPR  
      And    CO_CNTA_EMPR = @VSCO_CNTA_EMPR  

      ---- Tipo de Operacion 
      Select @VSTI_OPER = 'ABO'  

      ---- Linea adicionada por Julio Diestra
      ---- Se considera para la franquicia        
      If @CNIM_MOVI_DETA < 0  
             Select @VSTI_OPER = 'CAR' ,
                    @CNIM_MOVI_DETA =  Abs (@CNIM_MOVI_DETA)
      ---- Fin de L¡nea adicionado Por Julio Diestra

      
      ---- Datos de Tipo y Codigo de Auxiliar   
      Select @VSTI_AUXI_EMPR = NULL, @VSCO_AUXI_EMPR = NULL  
      If @VSST_AUXI_CNTA = 'S'  
        Select @VSTI_AUXI_EMPR = @CSTI_AUXI_CABE, @VSCO_AUXI_EMPR = @CSCO_AUXI_CABE  
      ---- Datos de Orden de Servicio 
      Select @VSCO_ORDE_SERV = NULL  
      ---- Datos de Documento 
      Select  @VSTI_DOCU = NULL,	@VSNU_DOCU = NULL,   
              @VDFE_DOCU = NULL,	@VDFE_VENC = NULL  
 
      If @VSST_DOCU_CNTA = 'S'  
        Select @VSTI_DOCU = @CSTI_DOCU,	@VSNU_DOCU = @CSNU_DOCU,  
               @VDFE_DOCU = @CDFE_DOCU,   @VDFE_VENC = @CDFE_VENC  

      If @CNIM_MOVI_DETA > 0  
      Begin  
        Select @VNIM_MOVI      = @CNIM_MOVI_DETA, @VNFA_CAMB      = @CNFA_CAMB_MOVI,  
               @VNFA_CAMB_DIAR = @CNFA_CONV_MOVI, @VNIM_MOVI_ORIG = 0.00,  
               @VNIM_MVTO_CNTB = 0.00  
        -- Obtiene Monto Origen y Monto Contable --  
        Exec SP_TTPROC_INLO_Q02 @CSCO_MONE_MOVI,        @VSCO_MONE_CNTA,  
                                @VSCO_MONE_CNTB,        @VSCO_MONE_NACI,  
                                @VSST_MONE,             @CNFA_CAMB_M001,   @CNFA_CONV_M001,
                                @VNIM_MOVI,             @VNIM_MOVI_ORIG OUTPUT,  
                                @VNIM_MVTO_CNTB OUTPUT, @VSCO_MONE_ASTO OUTPUT  

        ---- Tipo de Cambio 1, Cuando moneda del Asiento es la misma a la Moneda Contable   
        If @VSCO_MONE_ASTO = @VSCO_MONE_CNTB  
           Select @VNFA_CAMB = 1  
        ---- Graba Asiento   
        Insert Into [OFIINTE].[dbo].[TTINTE_CNDE]  
        (CO_EMPR,      NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,  
         NU_ANNO,      NU_MESE,      NU_ASTO,      NU_SECU,  
         FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,  
         TI_DOCU,      NU_DOCU,      FE_DOCU,      TI_CAMB,  
         CO_MONE,      FA_CAMB,      FA_CAMB_DIAR, TI_OPER,  
         IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS,      CO_ORDE_SERV, 
         SI_MVTO_CNTB, NU_PROC, FE_DOCU_VENC)  
        Values
        (@ISCO_EMPR,      @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB,  
         @VNNU_ANNO,      @VNNU_MESE,      @VSNU_ASTO,      @VNNU_SECU,  
         @CDFE_DOCU,      @VSCO_CNTA_EMPR, @VSTI_AUXI_EMPR, @VSCO_AUXI_EMPR,  
         @VSTI_DOCU,      @VSNU_DOCU,      @VDFE_DOCU,      'PAC',  
         @VSCO_MONE_ASTO, @VNFA_CAMB,      @VNFA_CAMB_DIAR, @VSTI_OPER,  
         @VNIM_MOVI_ORIG, @VNIM_MVTO_CNTB, @VSDE_GLOS,      @VSCO_ORDE_SERV,
         'APR',           @INNU_PROC,      IsNull(@VDFE_VENC, @VDFE_DOCU) )  
        If @@error != 0  
        Begin  
          Rollback Tran SP_TTPROC_INVE_I01  
          Close CU_TTPROC_INVE_I01_2  
          Deallocate CU_TTPROC_INVE_I01_2  
          Close CU_TTPROC_INVE_I01_1  
          Deallocate CU_TTPROC_INVE_I01_1  
          Return  
        End  
        Select @VNNU_SECU = @VNNU_SECU + 1  
      End  

      Fetch CU_TTPROC_INVE_I01_2  
      Into  @CSCO_CNTA_DETA, @CNIM_MOVI_DETA  
    End  
    Close CU_TTPROC_INVE_I01_2  
    Deallocate CU_TTPROC_INVE_I01_2  
  End  
  
  ---- Cuenta Devoluviones 
  If Len( Rtrim( Ltrim( @CSCO_CNTA_DEVO ) ) ) > 0 And @CSST_SIGN = 'N'  
  Begin   -- Solo cuando ST_SIGN = 'N', Solo Nota de Credito   
    ---- Montos los obtiene de la Cabecera   
    Select  @VSCO_CNTA_EMPR = @CSCO_CNTA_DEVO  
    ---- Obtiene Parametros de Cuenta Contable 
    Select @VSCO_MONE_CNTA = CO_MONE,  
           @VSST_MONE      = ST_MONE,  
           @VSST_AUXI_CNTA = ST_AUXI_EMPR,  
           @VSST_DOCU_CNTA = ST_DOCU_CNTB,  
           @VSST_ORDE_CNTA = ST_ORDE_SERV  
    From   [OFICONT].[DBO].TMPLAN_EMPR  
    Where  CO_EMPR = @ISCO_EMPR  
    And    CO_CNTA_EMPR = @VSCO_CNTA_EMPR  
    ---- Tipo de Operacion   
    Select @VSTI_OPER = 'CAR'  
    ---- Datos de Tipo y Codigo de Auxiliar 
    Select @VSTI_AUXI_EMPR = NULL, @VSCO_AUXI_EMPR = NULL  

    If @VSST_AUXI_CNTA = 'S'  
      Select @VSTI_AUXI_EMPR = @CSTI_AUXI_CABE, @VSCO_AUXI_EMPR = @CSCO_AUXI_CABE  

    ---- Datos de Orden de Servicio 
    Select @VSCO_ORDE_SERV = NULL 
    ---- Datos de Documento   
    Select  @VSTI_DOCU = NULL, @VSNU_DOCU = NULL,   
            @VDFE_DOCU = NULL, @VDFE_VENC = NULL  
  
    If @VSST_DOCU_CNTA = 'S'  
      Select @VSTI_DOCU = @CSTI_DOCU, @VSNU_DOCU = @CSNU_DOCU,   
             @VDFE_DOCU = @CDFE_DOCU, @VDFE_VENC = @CDFE_VENC  

    If ( @CNIM_BRUT_AFEC + @CNIM_BRUT_INAF ) > 0  
    Begin  
      Select @VNIM_MOVI      = @CNIM_BRUT_AFEC + @CNIM_BRUT_INAF,  
             @VNFA_CAMB      = @CNFA_CAMB_MOVI, @VNFA_CAMB_DIAR = @CNFA_CONV_MOVI,  
             @VNIM_MOVI_ORIG = 0.00, @VNIM_MVTO_CNTB = 0.00  
      ---- Obtiene Monto Origen y Monto Contable   
      Exec SP_TTPROC_INLO_Q02 @CSCO_MONE_MOVI,        @VSCO_MONE_CNTA,  
                              @VSCO_MONE_CNTB,        @VSCO_MONE_NACI,  
                              @VSST_MONE,             @CNFA_CAMB_M001,   @CNFA_CONV_M001,
                              @VNIM_MOVI,             @VNIM_MOVI_ORIG OUTPUT,  
                              @VNIM_MVTO_CNTB OUTPUT, @VSCO_MONE_ASTO OUTPUT  

      ---- Tipo de Cambio 1, Cuando moneda del Asiento es la misma a la Moneda Contable   
      If @VSCO_MONE_ASTO = @VSCO_MONE_CNTB  
         Select @VNFA_CAMB = 1  
      ---- Graba Asiento 
      Insert Into [OFIINTE].[dbo].[TTINTE_CNDE]  
      (CO_EMPR,      NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,  
       NU_ANNO,      NU_MESE,      NU_ASTO,      NU_SECU,  
       FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,  
       TI_DOCU,      NU_DOCU,      FE_DOCU,      TI_CAMB,  
       CO_MONE,      FA_CAMB,      FA_CAMB_DIAR, TI_OPER,  
       IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS,      CO_ORDE_SERV,
       SI_MVTO_CNTB, NU_PROC, FE_DOCU_VENC)  
      Values
      (@ISCO_EMPR,      @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB,  
       @VNNU_ANNO,      @VNNU_MESE,      @VSNU_ASTO,      @VNNU_SECU,  
       @CDFE_DOCU,      @VSCO_CNTA_EMPR, @VSTI_AUXI_EMPR, @VSCO_AUXI_EMPR,  
       @VSTI_DOCU,      @VSNU_DOCU,      @VDFE_DOCU,      'PAC',  
       @VSCO_MONE_ASTO, @VNFA_CAMB,      @VNFA_CAMB_DIAR, @VSTI_OPER,  
       @VNIM_MOVI_ORIG, @VNIM_MVTO_CNTB, @VSDE_GLOS,      @VSCO_ORDE_SERV,
       'APR',           @INNU_PROC , IsNull(@VDFE_VENC, @VDFE_DOCU))  
      If @@error != 0  
      Begin  
        Rollback Tran SP_TTPROC_INVE_I01  
        Close CU_TTPROC_INVE_I01_1  
        Deallocate CU_TTPROC_INVE_I01_1  
        Return  
      End  
      Select @VNNU_SECU = @VNNU_SECU + 1  
    End  
  End  

  Else If @CSST_SIGN = 'N'  
  Begin  
    ---- Solo cuando ST_SIGN = 'N', Solo Notas de Credito 
    ---- Montos los obtiene del Detalle   
    ---- Declaro Cursor  
    Declare CU_TTPROC_INVE_I01_3  Cursor  
    For  
    Select IsNull( t5.CO_CNTA_VENT, 'S/CUENTA'),  
           Sum(Round((Round(t1.PR_VENT * t1.CA_DOCU,2)  - (t1.IM_DCT1 + t1.IM_DCT2) ) ,2)) 
     From   [OFIVENT].[DBO].TDDOCU_CLIE t1, [OFIVENT].[DBO].TMITEM  t2, [OFIVENT].[DBO].TCDOCU_CLIE t3,   
            [OFIVENT].[DBO].TTFAMI t5  
    Where  t1.CO_EMPR = @ISCO_EMPR  
    And    t1.CO_UNID = @CSCO_UNID  
    And    t1.TI_DOCU = @CSTI_DOCU  
    And    t1.NU_DOCU = @CSNU_DOCU  
    And    t2.CO_EMPR = t1.CO_EMPR  
    And    t2.CO_ITEM = t1.CO_ITEM  
    And    t3.CO_EMPR = t1.CO_EMPR  
    And    t3.CO_UNID = t1.CO_UNID  
    And    t3.TI_DOCU = t1.TI_DOCU  
    And    t3.NU_DOCU = t1.NU_DOCU   
    And    t5.CO_FAMI = t2.CO_FAMI  
    And    t5.CO_RUBR = t2.CO_RUBR  
    And    t5.TI_ITEM = t2.TI_ITEM  
    And    t5.CO_EMPR = t2.CO_EMPR         
    Group By IsNull( t5.CO_CNTA_VENT, 'S/CUENTA')  


    Open  CU_TTPROC_INVE_I01_3  
    Fetch CU_TTPROC_INVE_I01_3  
    Into  @CSCO_CNTA_DETA, @CNIM_MOVI_DETA  
  
    While  @@fetch_status = 0  
    Begin  
      If @@error != 0  
      Begin  
        Rollback Tran SP_TTPROC_INVE_I01  
        Close CU_TTPROC_INVE_I01_3  
        Deallocate CU_TTPROC_INVE_I01_3  
        Close CU_TTPROC_INVE_I01_1  
        Deallocate CU_TTPROC_INVE_I01_1  
        Return  
      End  
      Select  @VSCO_CNTA_EMPR = @CSCO_CNTA_DETA  
      ---- Obtiene Parametros de Cuenta Contable 
      Select @VSCO_MONE_CNTA = CO_MONE, 
             @VSST_MONE      = ST_MONE,  
             @VSST_AUXI_CNTA = ST_AUXI_EMPR,  
             @VSST_DOCU_CNTA = ST_DOCU_CNTB,  
             @VSST_ORDE_CNTA = ST_ORDE_SERV  
      From   TMPLAN_EMPR  
      Where  CO_EMPR = @ISCO_EMPR  
      And    CO_CNTA_EMPR = @VSCO_CNTA_EMPR  
      ---- Tipo de Operacion 
      Select @VSTI_OPER = 'CAR'  
      ---- Datos de Tipo y Codigo de Auxiliar 
      Select @VSTI_AUXI_EMPR = NULL, @VSCO_AUXI_EMPR = NULL
      If @VSST_AUXI_CNTA = 'S'  
        Select @VSTI_AUXI_EMPR = @CSTI_AUXI_CABE, @VSCO_AUXI_EMPR = @CSCO_AUXI_CABE  
 
      -- Datos de Orden de Servicio --  
      Select @VSCO_ORDE_SERV = NULL  
      -- Datos de Documento --  
      Select  @VSTI_DOCU = NULL,	@VSNU_DOCU = NULL,
              @VDFE_DOCU = NULL, 	@VDFE_VENC = NULL
   
      If @VSST_DOCU_CNTA = 'S'  
        Select @VSTI_DOCU = @CSTI_DOCU,	@VSNU_DOCU = @CSNU_DOCU,
       @VDFE_DOCU = @CDFE_DOCU,	@VDFE_VENC = @CDFE_VENC  

      If @CNIM_MOVI_DETA > 0  
      Begin  
        Select @VNIM_MOVI      = @CNIM_MOVI_DETA, @VNFA_CAMB      = @CNFA_CAMB_MOVI,
               @VNFA_CAMB_DIAR = @CNFA_CONV_MOVI, @VNIM_MOVI_ORIG = 0.00,
               @VNIM_MVTO_CNTB = 0.00  
        -- Obtiene Monto Origen y Monto Contable --  
        Exec SP_TTPROC_INLO_Q02 @CSCO_MONE_MOVI,        @VSCO_MONE_CNTA,  
                                @VSCO_MONE_CNTB,        @VSCO_MONE_NACI,  
                                @VSST_MONE,             @CNFA_CAMB_M001,   @CNFA_CONV_M001,
                                @VNIM_MOVI,             @VNIM_MOVI_ORIG OUTPUT,  
                                @VNIM_MVTO_CNTB OUTPUT, @VSCO_MONE_ASTO OUTPUT  

        -- Tipo de Cambio 1, Cuando moneda del Asiento es la misma a la Moneda Contable --  
        If @VSCO_MONE_ASTO = @VSCO_MONE_CNTB  
          Select @VNFA_CAMB = 1  
        -- Graba Asiento --  
        Insert Into [OFIINTE].[dbo].[TTINTE_CNDE]  
        (CO_EMPR,      NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,  
         NU_ANNO,      NU_MESE,      NU_ASTO,      NU_SECU,  
         FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,  
         TI_DOCU,      NU_DOCU,      FE_DOCU,      TI_CAMB,  
         CO_MONE,      FA_CAMB,      FA_CAMB_DIAR, TI_OPER,  
         IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS,      CO_ORDE_SERV, 
         SI_MVTO_CNTB, NU_PROC, FE_DOCU_VENC)  
        Values
        (@ISCO_EMPR,   @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB,  
         @VNNU_ANNO,   @VNNU_MESE,      @VSNU_ASTO,      @VNNU_SECU,  
         @CDFE_DOCU,   @VSCO_CNTA_EMPR, @VSTI_AUXI_EMPR, @VSCO_AUXI_EMPR,  
         @VSTI_DOCU,   @VSNU_DOCU,      @VDFE_DOCU,      'PAC',  
         @VSCO_MONE_ASTO, @VNFA_CAMB,      @VNFA_CAMB_DIAR, @VSTI_OPER,  
         @VNIM_MOVI_ORIG, @VNIM_MVTO_CNTB, @VSDE_GLOS,   @VSCO_ORDE_SERV,
        'APR',         @INNU_PROC,  IsNull(@VDFE_VENC, @VDFE_DOCU))  
        If @@error != 0  
        Begin  
          Rollback Tran SP_TTPROC_INVE_I01  
          Close CU_TTPROC_INVE_I01_3  
          Deallocate CU_TTPROC_INVE_I01_3  
          Close CU_TTPROC_INVE_I01_1  
          Deallocate CU_TTPROC_INVE_I01_1  
          Return  
        End  
        Select @VNNU_SECU = @VNNU_SECU + 1  
      End  

      Fetch CU_TTPROC_INVE_I01_3  
      Into  @CSCO_CNTA_DETA, @CNIM_MOVI_DETA  
    End  
    Close CU_TTPROC_INVE_I01_3  
    Deallocate CU_TTPROC_INVE_I01_3  
  End  
  
  ---- Cuenta Otros Ingresos 
  If Len( Rtrim( Ltrim( @CSCO_CNTA_OTRO ) ) ) > 0  And ( @CNIM_FLET + @CNIM_MORA +@CNIM_GAFI) > 0  
  Begin  
    Select  @VSCO_CNTA_EMPR = @CSCO_CNTA_OTRO  
    ---- Obtiene Parametros de Cuenta Contable 
    Select @VSCO_MONE_CNTA = CO_MONE,  
           @VSST_MONE      = ST_MONE,  
           @VSST_AUXI_CNTA = ST_AUXI_EMPR,  
           @VSST_DOCU_CNTA = ST_DOCU_CNTB,  
           @VSST_ORDE_CNTA = ST_ORDE_SERV  
    From   [OFICONT].[DBO].TMPLAN_EMPR  
    Where  CO_EMPR = @ISCO_EMPR  
    And    CO_CNTA_EMPR = @VSCO_CNTA_EMPR  
    ---- Tipo de Operacion 
    If @CSST_SIGN = 'S'  
      Select @VSTI_OPER = 'ABO'  
    Else  
      Select @VSTI_OPER = 'CAR'  
    ---- Datos de Tipo y Codigo de Auxiliar 
    Select @VSTI_AUXI_EMPR = NULL,	@VSCO_AUXI_EMPR = NULL  

    If @VSST_AUXI_CNTA = 'S'  
      Select @VSTI_AUXI_EMPR = @CSTI_AUXI_CABE,	@VSCO_AUXI_EMPR = @CSCO_AUXI_CABE  
    ---- Datos de Orden de Servicio 
    Select @VSCO_ORDE_SERV = NULL  
    ---- Datos de Documento 
    Select  @VSTI_DOCU = NULL,	@VSNU_DOCU = NULL,
		@VDFE_DOCU = NULL,	@VDFE_VENC = NULL  
    If @VSST_DOCU_CNTA = 'S'  
      Select @VSTI_DOCU = @CSTI_DOCU,	@VSNU_DOCU = @CSNU_DOCU,
		 @VDFE_DOCU = @CDFE_DOCU,	@VDFE_VENC = @CDFE_VENC  

    Select @VNIM_MOVI      = @CNIM_FLET + @CNIM_MORA+ @CNIM_GAFI, 
           @VNFA_CAMB      = @CNFA_CAMB_MOVI, @VNFA_CAMB_DIAR = @CNFA_CONV_MOVI,
    @VNIM_MOVI_ORIG = 0.00, @VNIM_MVTO_CNTB = 0.00  
    ---- Obtiene Monto Origen y Monto Contable 
    Exec SP_TTPROC_INLO_Q02 @CSCO_MONE_MOVI,        @VSCO_MONE_CNTA,  
                            @VSCO_MONE_CNTB,        @VSCO_MONE_NACI,  
                            @VSST_MONE,             @CNFA_CAMB_M001,   @CNFA_CONV_M001,
                            @VNIM_MOVI,             @VNIM_MOVI_ORIG OUTPUT,  
                            @VNIM_MVTO_CNTB OUTPUT, @VSCO_MONE_ASTO OUTPUT  

    ---- Tipo de Cambio 1, Cuando moneda del Asiento es la misma a la Moneda Contable 
    If @VSCO_MONE_ASTO = @VSCO_MONE_CNTB  
      Select @VNFA_CAMB = 1  
    ---- Graba Asiento 
    Insert Into [OFIINTE].[dbo].[TTINTE_CNDE]  
    (CO_EMPR,      NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,  
     NU_ANNO,      NU_MESE,      NU_ASTO,      NU_SECU,  
     FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,  
     TI_DOCU,      NU_DOCU,      FE_DOCU,      TI_CAMB,  
     CO_MONE,      FA_CAMB,      FA_CAMB_DIAR, TI_OPER,  
     IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS,      CO_ORDE_SERV,
     SI_MVTO_CNTB, NU_PROC, FE_DOCU_VENC)  
     Values
    (@ISCO_EMPR,   @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB,  
     @VNNU_ANNO,   @VNNU_MESE,      @VSNU_ASTO,      @VNNU_SECU,  
     @CDFE_DOCU,      @VSCO_CNTA_EMPR, @VSTI_AUXI_EMPR, @VSCO_AUXI_EMPR,  
     @VSTI_DOCU,      @VSNU_DOCU,      @VDFE_DOCU,      'PAC',  
     @VSCO_MONE_ASTO, @VNFA_CAMB,      @VNFA_CAMB_DIAR, @VSTI_OPER,  
     @VNIM_MOVI_ORIG, @VNIM_MVTO_CNTB, @VSDE_GLOS,   @VSCO_ORDE_SERV,
     'APR',     @INNU_PROC, IsNull(@VDFE_VENC, @VDFE_DOCU))  
    If @@error != 0  
    Begin  
      Rollback Tran SP_TTPROC_INVE_I01  
      Close CU_TTPROC_INVE_I01_1  
      Deallocate CU_TTPROC_INVE_I01_1  
      Return  
    End  
    Select @VNNU_SECU = @VNNU_SECU + 1  
  End  
  
  ---- Cuenta Dctos Globales 
  If Len( Rtrim(Ltrim(@CSCO_CNTA_DCTO))) > 0  And ( @CNIM_DCT1 + @CNIM_DCT2) > 0  
  Begin  
    Select  @VSCO_CNTA_EMPR = @CSCO_CNTA_DCTO  
    ---- Obtiene Parametros de Cuenta Contable 
    Select @VSCO_MONE_CNTA = CO_MONE,  
           @VSST_MONE      = ST_MONE,  
           @VSST_AUXI_CNTA = ST_AUXI_EMPR,  
           @VSST_DOCU_CNTA = ST_DOCU_CNTB,  
           @VSST_ORDE_CNTA = ST_ORDE_SERV  
    From   [OFICONT].[DBO].TMPLAN_EMPR  
    Where  CO_EMPR = @ISCO_EMPR  
    And    CO_CNTA_EMPR = @VSCO_CNTA_EMPR  
    ---- Tipo de Operacion 
    If @CSST_SIGN = 'S'  
      Select @VSTI_OPER = 'ABO'  
    Else  
      Select @VSTI_OPER = 'CAR'  
    ---- Datos de Tipo y Codigo de Auxiliar 
    Select @VSTI_AUXI_EMPR = NULL,	@VSCO_AUXI_EMPR = NULL  

    If @VSST_AUXI_CNTA = 'S'  
      Select @VSTI_AUXI_EMPR = @CSTI_AUXI_CABE,	@VSCO_AUXI_EMPR = @CSCO_AUXI_CABE  
    ---- Datos de Orden de Servicio 
    Select @VSCO_ORDE_SERV = NULL  
    ---- Datos de Documento 
    Select  @VSTI_DOCU = NULL,	@VSNU_DOCU = NULL,
		@VDFE_DOCU = NULL,	@VDFE_VENC = NULL  
    If @VSST_DOCU_CNTA = 'S'  
      Select @VSTI_DOCU = @CSTI_DOCU,	@VSNU_DOCU = @CSNU_DOCU,
		 @VDFE_DOCU = @CDFE_DOCU,	@VDFE_VENC = @CDFE_VENC  

    Select @VNIM_MOVI      = @CNIM_DCT1 + @CNIM_DCT2, 
           @VNFA_CAMB      = @CNFA_CAMB_MOVI, @VNFA_CAMB_DIAR = @CNFA_CONV_MOVI,
           @VNIM_MOVI_ORIG = 0.00, @VNIM_MVTO_CNTB = 0.00  
    ---- Obtiene Monto Origen y Monto Contable 
    Exec SP_TTPROC_INLO_Q02 @CSCO_MONE_MOVI,        @VSCO_MONE_CNTA,  
                            @VSCO_MONE_CNTB,        @VSCO_MONE_NACI,  
                            @VSST_MONE,             @CNFA_CAMB_M001,   @CNFA_CONV_M001,
                            @VNIM_MOVI,             @VNIM_MOVI_ORIG OUTPUT,  
                            @VNIM_MVTO_CNTB OUTPUT, @VSCO_MONE_ASTO OUTPUT  

    ---- Tipo de Cambio 1, Cuando moneda del Asiento es la misma a la Moneda Contable 
    If @VSCO_MONE_ASTO = @VSCO_MONE_CNTB  
      Select @VNFA_CAMB = 1  
    ---- Graba Asiento 
    Insert Into [OFIINTE].[dbo].[TTINTE_CNDE]  
    (CO_EMPR,      NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,  
     NU_ANNO,      NU_MESE,      NU_ASTO,      NU_SECU,  
     FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,  
     TI_DOCU,      NU_DOCU,      FE_DOCU,      TI_CAMB,  
     CO_MONE,      FA_CAMB,      FA_CAMB_DIAR, TI_OPER,  
     IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS,      CO_ORDE_SERV,
     SI_MVTO_CNTB, NU_PROC, FE_DOCU_VENC)  
     Values
    (@ISCO_EMPR,   @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB,  
     @VNNU_ANNO,   @VNNU_MESE,      @VSNU_ASTO,      @VNNU_SECU,  
     @CDFE_DOCU,      @VSCO_CNTA_EMPR, @VSTI_AUXI_EMPR, @VSCO_AUXI_EMPR,  
     @VSTI_DOCU,      @VSNU_DOCU,      @VDFE_DOCU,      'PAC',  
     @VSCO_MONE_ASTO, @VNFA_CAMB,      @VNFA_CAMB_DIAR, @VSTI_OPER,  
     @VNIM_MOVI_ORIG, @VNIM_MVTO_CNTB, @VSDE_GLOS,   @VSCO_ORDE_SERV,
     'APR',     @INNU_PROC, IsNull(@VDFE_VENC, @VDFE_DOCU))  
    If @@error != 0  
    Begin  
      Rollback Tran SP_TTPROC_INVE_I01  
      Close CU_TTPROC_INVE_I01_1  
      Deallocate CU_TTPROC_INVE_I01_1  
      Return  
    End  
    Select @VNNU_SECU = @VNNU_SECU + 1  
  End  

  ---- Cuenta Igv 
  If Len( Rtrim( Ltrim( @CSCO_CNTA_IGVS ) ) ) > 0 And @CNIM_IGVS > 0  
  Begin  
    Select  @VSCO_CNTA_EMPR = @CSCO_CNTA_IGVS  
    ---- Obtiene Parametros de Cuenta Contable 
    Select @VSCO_MONE_CNTA = CO_MONE,  
           @VSST_MONE      = ST_MONE,  
           @VSST_AUXI_CNTA = ST_AUXI_EMPR,  
           @VSST_DOCU_CNTA = ST_DOCU_CNTB,  
           @VSST_ORDE_CNTA = ST_ORDE_SERV  
    From   TMPLAN_EMPR  
    Where  CO_EMPR = @ISCO_EMPR  
    And    CO_CNTA_EMPR = @VSCO_CNTA_EMPR  
    ---- Tipo de Operacion 
    If @CSST_SIGN = 'S'  
      Select @VSTI_OPER = 'ABO'  
    Else  
      Select @VSTI_OPER = 'CAR'  
    ---- Datos de Tipo y Codigo de Auxiliar 
    Select @VSTI_AUXI_EMPR = NULL, @VSCO_AUXI_EMPR = NULL  
    If @VSST_AUXI_CNTA = 'S'  
      Select @VSTI_AUXI_EMPR = @CSTI_AUXI_CABE, @VSCO_AUXI_EMPR = @CSCO_AUXI_CABE  
    ---- Datos de Orden de Servicio 
    Select @VSCO_ORDE_SERV = NULL  
    ---- Datos de Documento 
    Select  @VSTI_DOCU = NULL, @VSNU_DOCU = NULL,  
            @VDFE_DOCU = NULL, @VDFE_VENC = NULL  

    If @VSST_DOCU_CNTA = 'S'  
       Select @VSTI_DOCU = @CSTI_DOCU, @VSNU_DOCU = @CSNU_DOCU,  
              @VDFE_DOCU = @CDFE_DOCU, @VDFE_VENC = @CDFE_VENC  

    Select @VNIM_MOVI      = @CNIM_IGVS, @VNFA_CAMB      = @CNFA_CAMB_MOVI,  
           @VNFA_CAMB_DIAR = @CNFA_CONV_MOVI, @VNIM_MOVI_ORIG = 0.00,
           @VNIM_MVTO_CNTB = 0.00  

    ---- Obtiene Monto Origen y Monto Contable 
    Exec SP_TTPROC_INLO_Q02 @CSCO_MONE_MOVI,        @VSCO_MONE_CNTA,  
                            @VSCO_MONE_CNTB,        @VSCO_MONE_NACI,  
                            @VSST_MONE,             @CNFA_CAMB_M001,   @CNFA_CONV_M001,
                            @VNIM_MOVI,             @VNIM_MOVI_ORIG OUTPUT,  
                            @VNIM_MVTO_CNTB OUTPUT, @VSCO_MONE_ASTO OUTPUT  

    ---- Tipo de Cambio 1, Cuando moneda del Asiento es la misma a la Moneda Contable 
    If @VSCO_MONE_ASTO = @VSCO_MONE_CNTB  
      Select @VNFA_CAMB = 1  
    ---- Graba Asiento --  
    Insert Into [OFIINTE].[dbo].[TTINTE_CNDE]  
    (CO_EMPR,      NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,  
     NU_ANNO,      NU_MESE,      NU_ASTO,      NU_SECU,  
     FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,  
     TI_DOCU,      NU_DOCU,      FE_DOCU,      TI_CAMB,  
     CO_MONE,      FA_CAMB,      FA_CAMB_DIAR, TI_OPER,  
     IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS,      CO_ORDE_SERV, 
     SI_MVTO_CNTB, NU_PROC, FE_DOCU_VENC)  
     Values
    (@ISCO_EMPR,      @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB,  
     @VNNU_ANNO,      @VNNU_MESE,      @VSNU_ASTO,      @VNNU_SECU,  
     @CDFE_DOCU,      @VSCO_CNTA_EMPR, @VSTI_AUXI_EMPR, @VSCO_AUXI_EMPR,  
     @VSTI_DOCU,      @VSNU_DOCU,      @VDFE_DOCU,      'PAC',  
     @VSCO_MONE_ASTO, @VNFA_CAMB,      @VNFA_CAMB_DIAR, @VSTI_OPER,  
     @VNIM_MOVI_ORIG, @VNIM_MVTO_CNTB, @VSDE_GLOS,      @VSCO_ORDE_SERV,
     'APR',           @INNU_PROC, IsNull(@VDFE_VENC, @VDFE_DOCU))  
    If @@error != 0  
    Begin  
      Rollback Tran SP_TTPROC_INVE_I01  
      Close CU_TTPROC_INVE_I01_1  
      Deallocate CU_TTPROC_INVE_I01_1  
      Return  
    End  
    Select @VNNU_SECU = @VNNU_SECU + 1  
  End  
  
  Update [OFIVENT].[DBO].TCDOCU_CLIE  
     Set ST_INTE = @ISST_FLAG,  
         NU_PROC = @INNU_PROC  
  Where  NU_DOCU = @CSNU_DOCU  
  And    TI_DOCU = @CSTI_DOCU  
  And    CO_UNID = @CSCO_UNID  
  And    CO_EMPR = @ISCO_EMPR  

  If @@error != 0  
  Begin  
    Rollback Tran SP_TTPROC_INVE_I01  
    Close CU_TTPROC_INVE_I01_1  
    Deallocate CU_TTPROC_INVE_I01_1  
    Return  
  End  
  
  Fetch CU_TTPROC_INVE_I01_1  
  Into  @CSCO_UNID,@CSTI_DOCU,@CSNU_DOCU,@CDFE_DOCU,
        @CDFE_VENC,@CSTI_AUXI_CABE,@CSCO_AUXI_CABE,@CSCO_MONE_MOVI,
        @CNFA_CAMB_MOVI,@CNFA_CONV_MOVI,@CNIM_BRUT_AFEC,@CNIM_BRUT_INAF,  
        @CNIM_IGVS,@CNIM_FLET,@CNIM_MORA,@CNIM_GAFI,  
        @CNIM_TOTA,@CNNU_CNTB_EMPR,@CSCO_UNID_CNTB,@CSCO_OPRC_CNTB,
        @CSCO_CNTA_CLNT,@CSCO_CNTA_VENT,@CSCO_CNTA_OTRO,@CSCO_CNTA_DEVO,
        @CSCO_CNTA_IGVS,@CSCO_CNTA_DCTO,@CSST_SIGN,@CNIM_DCT1,
        @CNIM_DCT2,@CNFA_CAMB_M001,@CNFA_CONV_M001

End  
Close CU_TTPROC_INVE_I01_1  
Deallocate CU_TTPROC_INVE_I01_1  
  
-- Insertando a la Tabla de Reporte --   
Insert Into [OFIINTE].[dbo].[TTINTE_REPO] 
([CO_EMPR], [NU_CNTB_EMPR], [CO_UNID_CNTB], [CO_OPRC_CNTB], 
 [NU_ANNO], [NU_MESE], [NU_ASTO], [NU_SECU], 
 [FE_ASTO_CNTB], [CO_CNTA_EMPR], [TI_AUXI_EMPR], [CO_AUXI_EMPR], 
 [TI_DOCU], [NU_DOCU], [FE_DOCU], [FE_DOCU_VENC],
 [TI_CAMB], [CO_MONE], [FA_CAMB], [FA_CAMB_DIAR],
 [TI_OPER], [IM_MVTO_ORIG], [IM_MVTO_CNTB], [DE_GLOS], 
 [TI_DOCU_REFE], [NU_DOCU_REFE], [FE_DOCU_REFE], [NO_GIRA],
 [FE_ENTR_CHEQ], [FE_PROG_CHEQ], [CO_ORDE_SERV], [SI_MVTO_CNTB], 
 [CO_UNID_ORIG], [CO_OPRC_ORIG], [NU_ASTO_ORIG], 
 [ST_OTRS], [NU_PROC], [NU_PROC_SECU],
 [ST_IMPR_CHEQ], [ST_FLAG], 
 [CO_TABL_ORIG], [CO_CLAV_TAOR], [CO_TIPO_OPER], 
 [CO_USUA_CREA],
 [FE_USUA_CREA])  
 Select [CO_EMPR], [NU_CNTB_EMPR], [CO_UNID_CNTB], [CO_OPRC_CNTB],
        [NU_ANNO], [NU_MESE], [NU_ASTO], [NU_SECU],
        [FE_ASTO_CNTB], [CO_CNTA_EMPR], [TI_AUXI_EMPR], [CO_AUXI_EMPR],
        [TI_DOCU], [NU_DOCU], [FE_DOCU], [FE_DOCU_VENC],
        [TI_CAMB], [CO_MONE], [FA_CAMB], [FA_CAMB_DIAR], 
        [TI_OPER], [IM_MVTO_ORIG], [IM_MVTO_CNTB], [DE_GLOS], 
        [TI_DOCU_REFE], [NU_DOCU_REFE], [FE_DOCU_REFE], [NO_GIRA], 
        [FE_ENTR_CHEQ], [FE_PROG_CHEQ], [CO_ORDE_SERV], [SI_MVTO_CNTB], 
        [CO_UNID_ORIG], [CO_OPRC_ORIG], [NU_ASTO_ORIG], 
        [ST_OTRS], [NU_PROC], [NU_PROC_SECU],
        [ST_IMPR_CHEQ], [ST_FLAG], 
        [CO_TABL_ORIG], [CO_CLAV_TAOR], [CO_TIPO_OPER], 
        [CO_USUA_CREA], 
        [FE_USUA_CREA]
From   [OFIINTE].[dbo].[TTINTE_CNDE]  
Where   NU_PROC = @INNU_PROC  
And     CO_EMPR = @ISCO_EMPR  

If @@error != 0  
Begin  
  Rollback Tran SP_TTPROC_INVE_I01  
  Return  
End  
---- Declaro Cursor Para Grabar en Tabla Operaciones Resumidas 
Declare CU_TTPROC_INVE_I01_10  Cursor  
For  
Select t1.CO_EMPR,           t1.NU_CNTB_EMPR,      t1.CO_UNID_CNTB,      t1.CO_OPRC_CNTB,  
       t1.NU_ANNO,           t1.NU_MESE,           Max(t1.NU_ASTO),      Max(t1.NU_SECU),  
       Max(t1.FE_ASTO_CNTB), t1.CO_CNTA_EMPR,      t1.TI_AUXI_EMPR,      t1.CO_AUXI_EMPR,  
Max(t1.TI_DOCU),      Max(t1.NU_DOCU),      Max(t1.FE_DOCU),      Max(t1.FE_DOCU_VENC),  
       Max(t1.TI_CAMB),      t1.CO_MONE,           t1.FA_CAMB,           t1.FA_CAMB_DIAR,  
       t1.TI_OPER,           ISNULL(Sum(ISNULL(t1.IM_MVTO_ORIG,0)),0), ISNULL(Sum(ISNULL(t1.IM_MVTO_CNTB,0)),0), Max(t1.DE_GLOS),  
       Max(t1.TI_DOCU_REFE), Max(t1.NU_DOCU_REFE), Max(t1.FE_DOCU_REFE), Max(t1.NO_GIRA),  
       Max(t1.FE_ENTR_CHEQ), Max(t1.FE_PROG_CHEQ), t1.CO_ORDE_SERV,      Max(t1.SI_MVTO_CNTB),  
       'N', Max(t1.CO_UNID_ORIG), Max(t1.CO_OPRC_ORIG), Max(t1.NU_ASTO_ORIG),  
       Max(t1.ST_OTRS),      Max(t1.NU_PROC),      Max(t1.NU_PROC_SECU), Max(t1.ST_IMPR_CHEQ),  
       Max(t1.ST_FLAG),      Max(t1.CO_TABL_ORIG), Max(t1.CO_CLAV_TAOR), Max(t1.CO_USUA_MODI),
       Max(t1.FE_USUA_MODI)
From   [OFIINTE].[dbo].[TTINTE_CNDE] t1,   
       [OFIINTE].[dbo].[TMOPRC_RESU] t2  
Where  t1.NU_PROC = @INNU_PROC  
And    t1.CO_EMPR = @ISCO_EMPR  
And    t1.CO_EMPR = t2.CO_EMPR  
And    t1.CO_OPRC_CNTB = t2.CO_OPRC_CNTB  
And    t2.ST_ASTO_RESU = 'S'  
Group By t1.CO_EMPR,      t1.NU_CNTB_EMPR, t1.CO_UNID_CNTB, t1.CO_OPRC_CNTB,  
         t1.NU_ANNO,      t1.NU_MESE,      t1.CO_CNTA_EMPR, t1.TI_AUXI_EMPR,  
         t1.CO_AUXI_EMPR, t1.CO_ORDE_SERV, t1.TI_OPER,      t1.CO_MONE,  
         t1.FA_CAMB,      t1.FA_CAMB_DIAR  
Order By t1.CO_EMPR,      t1.NU_CNTB_EMPR, t1.CO_UNID_CNTB, t1.CO_OPRC_CNTB,  
         t1.NU_ANNO,      t1.NU_MESE,      t1.CO_CNTA_EMPR, t1.TI_AUXI_EMPR,  
         t1.CO_AUXI_EMPR, t1.CO_ORDE_SERV, t1.TI_OPER,      t1.CO_MONE,  
         t1.FA_CAMB,      t1.FA_CAMB_DIAR  
Open  CU_TTPROC_INVE_I01_10  
Fetch CU_TTPROC_INVE_I01_10  
Into  @CSCO_EMPR_0001, @CNNU_CNTB_EMP1, @CSCO_UNID_CNT1, @CSCO_OPRC_CNT1,  
      @CNNU_ANNO_0001, @CNNU_MESE_0001, @CSNU_ASTO_0001, @CNNU_SECU_0001,  
      @CDFE_ASTO_CNTB, @CSCO_CNTA_EMP1, @CSTI_AUXI_EMP1, @CSCO_AUXI_EMP1,  
      @CSTI_DOCU_0001, @CSNU_DOCU_0001, @CDFE_DOCU_0001, @CDFE_DOCU_VENC,  
      @CSTI_CAMB_0001, @CSCO_MONE_0001, @CNFA_CAMB_0001, @CNFA_CAMB_DIA1,  
      @CSTI_OPER_0001, @CNIM_MVTO_ORI1, @CNIM_MVTO_CNT1, @CSDE_GLOS_0001,  
      @CSTI_DOCU_REF1, @CSNU_DOCU_REF1, @CDFE_DOCU_REF1, @CSNO_GIRA_0001,  
      @CDFE_ENTR_CHE1, @CDFE_PROG_CHE1, @CSCO_ORDE_SER1, @CSSI_MVTO_CNT1,  
      @CSSI_MVTO_DOC1, @CSCO_UNID_ORI1, @CSCO_OPRC_ORI1, @CSNU_ASTO_ORI1,  
      @CSST_OTRS_0001, @CNNU_PROC_0001, @CNNU_PROC_SEC1, @CSST_IMPR_CHE1,  
      @CSST_FLAG_0001, @CSCO_TABL_ORI1, @CSCO_CLAV_TAO1, @CSCO_USUA_MOD1,  
      @CDFE_USUA_MODI  
Select  @VSCO_OPRC_ANTE = '####'  
While  @@fetch_status = 0  
Begin  
  If @@error != 0  
  Begin  
    Rollback Tran SP_TTPROC_INVE_I01  
    Close CU_TTPROC_INVE_I01_10  
    Deallocate CU_TTPROC_INVE_I01_10  
    Return  
  End  
 
  If @CSCO_OPRC_CNT1 != @VSCO_OPRC_ANTE  
  Begin  
    Select @VSNU_ASTO = SubString( Convert( Varchar, ( Isnull( Max( Isnull( NU_ASTO, 0 ) ), 0 ) + 1 + 10000000000 ) ), 2, 10 )   
    From   [OFIINTE].[dbo].[TTINTE_CNTB]  
    Where  CO_EMPR        = @CSCO_EMPR_0001  
    And    NU_CNTB_EMPR   = @CNNU_CNTB_EMP1  
    And    CO_UNID_CNTB   = @CSCO_UNID_CNT1  
    And    CO_OPRC_CNTB   = @CSCO_OPRC_CNT1  
    And    NU_ANNO        = @CNNU_ANNO_0001  
    And    NU_MESE        = @CNNU_MESE_0001  
    And    NU_PROC        = @INNU_PROC  
    Select @VSCO_OPRC_ANTE = @CSCO_OPRC_CNT1  
    Select @VNNU_SECU = 0  
  End  
  Select @VNNU_SECU = @VNNU_SECU + 1  
  ---- Graba Asiento Resumido 
  Insert Into [OFIINTE].[dbo].[TTINTE_CNTB]  
  (CO_EMPR,         NU_CNTB_EMPR,    CO_UNID_CNTB,    CO_OPRC_CNTB,  
   NU_ANNO,         NU_MESE,         NU_ASTO,         NU_SECU,  
   FE_ASTO_CNTB,    CO_CNTA_EMPR,    TI_AUXI_EMPR,    CO_AUXI_EMPR,  
   TI_DOCU,         NU_DOCU,         FE_DOCU,         FE_DOCU_VENC,  
   TI_CAMB,         CO_MONE,         FA_CAMB,         FA_CAMB_DIAR,  
   TI_OPER,         IM_MVTO_ORIG,    IM_MVTO_CNTB,    DE_GLOS,  
   TI_DOCU_REFE,    NU_DOCU_REFE,    FE_DOCU_REFE,    NO_GIRA,  
   FE_ENTR_CHEQ,    FE_PROG_CHEQ,    CO_ORDE_SERV,    SI_MVTO_CNTB,  
   CO_UNID_ORIG,    CO_OPRC_ORIG,    NU_ASTO_ORIG,    ST_OTRS,
   NU_PROC,         NU_PROC_SECU,    ST_IMPR_CHEQ,    ST_FLAG, 
   CO_TABL_ORIG,    CO_CLAV_TAOR,    CO_USUA_MODI,    FE_USUA_MODI)  
  Values
  (@CSCO_EMPR_0001, @CNNU_CNTB_EMP1, @CSCO_UNID_CNT1, @CSCO_OPRC_CNT1,  
   @CNNU_ANNO_0001, @CNNU_MESE_0001, @VSNU_ASTO,      @VNNU_SECU,  
   @CDFE_ASTO_CNTB, @CSCO_CNTA_EMP1, @CSTI_AUXI_EMP1, @CSCO_AUXI_EMP1,  
   @CSTI_DOCU_0001, @CSNU_DOCU_0001, @CDFE_DOCU_0001, @CDFE_DOCU_VENC,  
   @CSTI_CAMB_0001, @CSCO_MONE_0001, @CNFA_CAMB_0001, @CNFA_CAMB_DIA1,  
   @CSTI_OPER_0001, @CNIM_MVTO_ORI1, @CNIM_MVTO_CNT1, @CSDE_GLOS_0001,  
   @CSTI_DOCU_REF1, @CSNU_DOCU_REF1, @CDFE_DOCU_REF1, @CSNO_GIRA_0001,  
   @CDFE_ENTR_CHE1, @CDFE_PROG_CHE1, @CSCO_ORDE_SER1, @CSSI_MVTO_CNT1,  
   @CSCO_UNID_ORI1, @CSCO_OPRC_ORI1, @CSNU_ASTO_ORI1,  
   @CSST_OTRS_0001, @CNNU_PROC_0001, @CNNU_PROC_SEC1, @CSST_IMPR_CHE1,  
   @CSST_FLAG_0001, @CSCO_TABL_ORI1, @CSCO_CLAV_TAO1, @CSCO_USUA_MOD1,  
   @CDFE_USUA_MODI)  

  If @@error != 0  
  Begin  
    Rollback Tran SP_TTPROC_INVE_I01  
    Close CU_TTPROC_INVE_I01_10  
    Deallocate CU_TTPROC_INVE_I01_10  
    Return  
  End  
  
  Fetch CU_TTPROC_INVE_I01_10  
  Into  @CSCO_EMPR_0001, @CNNU_CNTB_EMP1, @CSCO_UNID_CNT1, @CSCO_OPRC_CNT1,  
      @CNNU_ANNO_0001, @CNNU_MESE_0001, @CSNU_ASTO_0001, @CNNU_SECU_0001,  
      @CDFE_ASTO_CNTB, @CSCO_CNTA_EMP1, @CSTI_AUXI_EMP1, @CSCO_AUXI_EMP1,  
      @CSTI_DOCU_0001, @CSNU_DOCU_0001, @CDFE_DOCU_0001, @CDFE_DOCU_VENC,  
      @CSTI_CAMB_0001, @CSCO_MONE_0001, @CNFA_CAMB_0001, @CNFA_CAMB_DIA1,  
      @CSTI_OPER_0001, @CNIM_MVTO_ORI1, @CNIM_MVTO_CNT1, @CSDE_GLOS_0001,  
      @CSTI_DOCU_REF1, @CSNU_DOCU_REF1, @CDFE_DOCU_REF1, @CSNO_GIRA_0001,  
      @CDFE_ENTR_CHE1, @CDFE_PROG_CHE1, @CSCO_ORDE_SER1, @CSSI_MVTO_CNT1,  
      @CSSI_MVTO_DOC1, @CSCO_UNID_ORI1, @CSCO_OPRC_ORI1, @CSNU_ASTO_ORI1,  
      @CSST_OTRS_0001, @CNNU_PROC_0001, @CNNU_PROC_SEC1, @CSST_IMPR_CHE1,  
      @CSST_FLAG_0001, @CSCO_TABL_ORI1, @CSCO_CLAV_TAO1, @CSCO_USUA_MOD1,  
      @CDFE_USUA_MODI    
End  
Close CU_TTPROC_INVE_I01_10  
Deallocate CU_TTPROC_INVE_I01_10  
---- Graba Asiento Detallado 
Insert Into [OFIINTE].[dbo].[TTINTE_CNTB]  
(CO_EMPR,         NU_CNTB_EMPR,    CO_UNID_CNTB,    CO_OPRC_CNTB,  
 NU_ANNO,         NU_MESE,         NU_ASTO,         NU_SECU,  
 FE_ASTO_CNTB,    CO_CNTA_EMPR,    TI_AUXI_EMPR,    CO_AUXI_EMPR,  
 TI_DOCU,         NU_DOCU,         FE_DOCU,         FE_DOCU_VENC,  
 TI_CAMB,         CO_MONE,         FA_CAMB,         FA_CAMB_DIAR,  
 TI_OPER,         IM_MVTO_ORIG,    IM_MVTO_CNTB,    DE_GLOS,  
 TI_DOCU_REFE,    NU_DOCU_REFE,    FE_DOCU_REFE,    NO_GIRA,  
 FE_ENTR_CHEQ,    FE_PROG_CHEQ,    CO_ORDE_SERV,    SI_MVTO_CNTB,  
 CO_UNID_ORIG,    CO_OPRC_ORIG,    NU_ASTO_ORIG,  
 ST_OTRS,         NU_PROC,         NU_PROC_SECU,    ST_IMPR_CHEQ,  
 ST_FLAG,         CO_TABL_ORIG,    CO_CLAV_TAOR,    CO_USUA_MODI,  
 FE_USUA_MODI)  
Select t1.CO_EMPR,      t1.NU_CNTB_EMPR, t1.CO_UNID_CNTB, t1.CO_OPRC_CNTB,  
       t1.NU_ANNO,      t1.NU_MESE,      t1.NU_ASTO,      t1.NU_SECU,  
       t1.FE_ASTO_CNTB, t1.CO_CNTA_EMPR, t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR,  
       t1.TI_DOCU,      t1.NU_DOCU,      t1.FE_DOCU,      t1.FE_DOCU_VENC,  
       t1.TI_CAMB,      t1.CO_MONE,      t1.FA_CAMB,      t1.FA_CAMB_DIAR,  
       t1.TI_OPER,      t1.IM_MVTO_ORIG, t1.IM_MVTO_CNTB, t1.DE_GLOS,  
       t1.TI_DOCU_REFE, t1.NU_DOCU_REFE, t1.FE_DOCU_REFE, t1.NO_GIRA,  
       t1.FE_ENTR_CHEQ, t1.FE_PROG_CHEQ, t1.CO_ORDE_SERV, t1.SI_MVTO_CNTB,  
       t1.CO_UNID_ORIG, t1.CO_OPRC_ORIG, t1.NU_ASTO_ORIG,  
       t1.ST_OTRS,      t1.NU_PROC,      t1.NU_PROC_SECU, t1.ST_IMPR_CHEQ,  
       t1.ST_FLAG,      t1.CO_TABL_ORIG, t1.CO_CLAV_TAOR, t1.CO_USUA_MODI,  
       t1.FE_USUA_MODI  
From   [OFIINTE].[dbo].[TTINTE_CNDE] t1,   
       [OFIINTE].[dbo].[TMOPRC_RESU] t2  
Where  t1.NU_PROC = @INNU_PROC  
And    t1.CO_EMPR = @ISCO_EMPR  
And    t1.CO_EMPR = t2.CO_EMPR  
And    t1.CO_OPRC_CNTB = t2.CO_OPRC_CNTB  
And    ( t2.ST_ASTO_RESU = 'N' Or t2.ST_ASTO_RESU IS NULL )  

If @@error != 0  
Begin  
  Rollback Tran SP_TTPROC_INVE_I01  
  Return  
End 
---- Inserta Proceso de Interfase 
If @ISST_INUP = 'I'  
Begin  
  Insert Into [OFIINTE].[dbo].[TTPROC_INTE]  
  (CO_EMPR,      CO_SIST,      NU_PROC,  
   NO_RESP,      FE_INIC,      FE_FINA,  
   ST_PROC,      FE_TRAN_ORIG, ST_ORIG)  
  Values
  (@ISCO_EMPR,   'OFIVENT',    @INNU_PROC,  
   @ISDE_RESP,   @IDFE_INIC,   @IDFE_FINA,  
   'V',          GetDate(),    'F')  
  If @@error != 0  
  Begin  
    Rollback Tran SP_TTPROC_INVE_I01  
    Return  
  End  
End  

Commit  
--SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED  
Return  
/*------------------------------ Fin -------------------------------*/


GO
